// Parameters<Type>
// 从一个函数类型的参数中， 提取一个元组

declare function f1(arg: { a: number; b: string }): void;
 
type T0 = Parameters<() => string>;
     
type T1 = Parameters<(s: string) => void>;
     
type T2 = Parameters<<T>(arg: T) => T>;
     
type T3 = Parameters<typeof f1>;
     

type T4 = Parameters<any>;
     
type T5 = Parameters<never>;
     
// type T6 = Parameters<string>;
     
// type T7 = Parameters<Function>;
export {}
type parameters<T extends (...arg:any)=>any> =T extends (...arg:infer P)=>any?P:never

type sfd = any extends ()=>void ? "a":"b" //any 在这里也是当联合类型分步带入的